﻿using Nop.Core;
using Nop.Core.Domain.WindAlert;
using System.Collections.Generic;

namespace Nop.Services.WindAlert
{
    /// <summary>
    /// Spot service
    /// </summary>
    public partial interface IAlertService
    {
        #region Methods

        /// <summary>
        /// Deletes a spot group
        /// </summary>
        /// <param name="spot">SpotsGroup</param>
        void DeleteSpotsGroup(SpotsGroup spotsGroup);
       

        /// <summary>
        /// Gets all spotsGroup
        /// </summary>
        /// <param name="spotId">SpotsGroup Id</param>
        /// <returns>SpotsGroup collection</returns>
        IList<SpotsGroup> GetAllSpotsGroups(int alertOptionId = 0);
        
        
        /// <summary>
        /// Gets all spotsGroups
        /// </summary>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>SpotsGroup</returns>
        IPagedList<SpotsGroup> GetAllSpotsGroups(int pageIndex, int pageSize,
                                           int alertOptionId = 0);
       
        /// <summary>
        /// Gets a spotsGroup
        /// </summary>
        /// <param name="spotsGroupId">SpotsGroup identifier</param>
        /// <returns>SpotsGroup</returns>
        SpotsGroup GetSpotsGroupById(int spotsGroupId);

        /// <summary>
        /// Inserts a spotsGroup
        /// </summary>
        /// <param name="spotsGroup">SpotsGroup</param>
        void InsertSpotsGroup(SpotsGroup spotsGroup);

        /// <summary>
        /// Updates the spotsGroup
        /// </summary>
        /// <param name="spotsGroup">SpotsGroup</param>
        void UpdateSpotsGroup(SpotsGroup spotsGroup);

        #region alerts

        /// <summary>
        /// Deletes a alert
        /// </summary>
        /// <param name="alert">alert</param>
        void DeleteAlert(Alert alert);
        

        /// <summary>
        /// Gets alerts collection
        /// </summary>
        /// <param name="SpotsGroupId">SpotsGroup identifier</param>
        /// <param name="pageIndex">Page index</param>
        /// <param name="pageSize">Page size</param>
        /// <returns>SpotsGroup Customer mapping collection</returns>
        IPagedList<Alert> GetAlertsBySpotsGroupId(int spotsGroupId, int pageIndex, int pageSize);
        


        /// <summary>
        /// Gets a alert collection
        /// </summary>
        /// <param name="customerId">Product identifier</param>
        /// <returns> alerts collection</returns>
        IList<Alert> GetAlertsByCustomerId(int customerId);
       
        /// <summary>
        /// Gets a Alert  
        /// </summary>
        /// <param name="AlertId">Alert identifier</param>
        /// <returns>Alert</returns>
        Alert GetAlertById(int alertId);

        /// <summary>
        /// Inserts Alert
        /// </summary>
        /// <param name="Alert">Alert</param>
        void InsertAlert(Alert alert);

        /// <summary>
        /// Updates the Alert  
        /// </summary>
        /// <param name="Alert">Alert</param>
        void UpdateAlert(Alert alert);
        
        /// <summary>
        /// Get chaeck existing record
        /// </summary>
        /// <returns>Alert</returns>
        Alert CheckIfAlertExists(Alert alert);
       
        #endregion

        #endregion

    }
}
